10812. Победить распространение
В воскресенье будут проходить две
игры. Принимаются ставки на сумму и разность их счетов. По выигрышным числам
определить счет встреч.
Вход.
Первая строка содержит количество тестов n. Каждая следующая строка
содержит два неотрицательных числа x и y, представляющие собой
сумму и разность (взятую по модулю) двух окончательных счетов матчей.
Выход. Для каждого теста вывести в отдельной строке счета встреч, начиная с наибольшего. Если таких счетов не существует, вывести «impossible».
2
40 20
20 40
30 10
impossible
математика
Пусть a и b –
конечные искомые счета, a > b. Из условия задачи следует, что . Решая систему уравнений, получим: , откуда . Если x < y, то b получится
отрицательным, что невозможно. Значения a и b являются целыми,
следовательно x + y должно быть четным числом.
Для первого теста x = 40, y
= 20. Искомые счета равны: a =
(40 + 20) / 2 = 30, b = (40 – 20) / 2 = 10, оба они целые и
неотрицательные.
Читаем количество тестов. Для
каждого теста вычисляем конечные счета a и b по выше приведенным
формулам. Если сумма счетов меньше разности или сумма счетов не делится на 2,
то искомых счетов не существует, и в таком случае выводим сообщение impossible.
Иначе печатаем результат.
scanf("%d",&tests);
for(i = 0; i < tests; i++)
{
scanf("%d
%d",&x,&y);
a = (x + y) / 2;
b = (x - y) / 2;
if ((x <
y) || ((x + y) % 2)) printf("impossible\n");
else printf("%d %d\n",a,b);
}